From ec4e2ccc864036432b993c46e3a173e64767761c Mon Sep 17 00:00:00 2001 From: Keir Fraser Date: Mon, 23 Nov 2009 07:05:34 +0000 Subject: [PATCH] docs: descriptions of PSCSI_HBA and DSCSI_HBA Add descriptions of PSCSI_HBA class and DSCSI_HBA class to XenAPI document. Signed-off-by: Masaki Kanno --- docs/xen-api/revision-history.tex | 6 + docs/xen-api/xenapi-coversheet.tex | 4 +- docs/xen-api/xenapi-datamodel-graph.dot | 7 +- docs/xen-api/xenapi-datamodel.tex | 956 +++++++++++++++++++++--- 4 files changed, 862 insertions(+), 111 deletions(-) diff --git a/docs/xen-api/revision-history.tex b/docs/xen-api/revision-history.tex index ef214af16c..d867e4bd13 100644 --- a/docs/xen-api/revision-history.tex +++ b/docs/xen-api/revision-history.tex @@ -44,6 +44,12 @@ Added description for \texttt{PV/kernel} and \texttt{PV/ramdisk} parameters using URIs.\tabularnewline \hline + 1.0.9 & 20th Nov. 09 & M. Kanno & + Added definitions of new classes DSCSI\_HBA and PSCSI\_HBA. + Updated the table and the diagram representing relationships + between classes. Added host.PSCSI\_HBAs and VM.DSCSI\_HBAs + fields.\tabularnewline + \hline \end{tabular} \end{center} \end{flushleft} diff --git a/docs/xen-api/xenapi-coversheet.tex b/docs/xen-api/xenapi-coversheet.tex index 42b4ebd07b..95ee379859 100644 --- a/docs/xen-api/xenapi-coversheet.tex +++ b/docs/xen-api/xenapi-coversheet.tex @@ -17,12 +17,12 @@ \newcommand{\coversheetlogo}{xen.eps} %% Document date -\newcommand{\datestring}{17th June 2009} +\newcommand{\datestring}{20th November 2009} \newcommand{\releasestatement}{Stable Release} %% Document revision -\newcommand{\revstring}{API Revision 1.0.8} +\newcommand{\revstring}{API Revision 1.0.9} %% Document authors \newcommand{\docauthors}{ diff --git a/docs/xen-api/xenapi-datamodel-graph.dot b/docs/xen-api/xenapi-datamodel-graph.dot index 2850b9364e..8aaa8b061b 100644 --- a/docs/xen-api/xenapi-datamodel-graph.dot +++ b/docs/xen-api/xenapi-datamodel-graph.dot @@ -14,7 +14,7 @@ fontname="Verdana"; node [ shape=box ]; session VM host network VIF PIF SR VDI VBD PBD user; node [ shape=box ]; XSPolicy ACMPolicy DPCI PPCI host_cpu console VTPM; -node [ shape=box ]; DSCSI PSCSI; +node [ shape=box ]; DSCSI PSCSI DSCSI_HBA PSCSI_HBA; node [ shape=ellipse ]; VM_metrics VM_guest_metrics host_metrics; node [ shape=ellipse ]; PIF_metrics VIF_metrics VBD_metrics PBD_metrics; session -> host [ arrowhead="none" ] @@ -44,6 +44,11 @@ DPCI -> VM [ arrowhead="none", arrowtail="crow" ] DPCI -> PPCI [ arrowhead="none" ] PPCI -> host [ arrowhead="none", arrowtail="crow" ] DSCSI -> VM [ arrowhead="none", arrowtail="crow" ] +DSCSI_HBA -> VM [ arrowhead="none", arrowtail="crow" ] +DSCSI -> DSCSI_HBA [ arrowhead="none", arrowtail="crow" ] DSCSI -> PSCSI [ arrowhead="none" ] +DSCSI_HBA -> PSCSI_HBA [ arrowhead="crow", arrowtail="none" ] PSCSI -> host [ arrowhead="none", arrowtail="crow" ] +PSCSI_HBA -> host [ arrowhead="none", arrowtail="crow" ] +PSCSI -> PSCSI_HBA [ arrowhead="none", arrowtail="crow" ] } diff --git a/docs/xen-api/xenapi-datamodel.tex b/docs/xen-api/xenapi-datamodel.tex index fb76ade6bf..26722858cc 100644 --- a/docs/xen-api/xenapi-datamodel.tex +++ b/docs/xen-api/xenapi-datamodel.tex @@ -49,7 +49,9 @@ Name & Description \\ {\tt DPCI} & A pass-through PCI device \\ {\tt PPCI} & A physical PCI device \\ {\tt DSCSI} & A half-virtualized SCSI device \\ +{\tt DSCSI\_HBA} & A half-virtualized SCSI host bus adapter \\ {\tt PSCSI} & A physical SCSI device \\ +{\tt PSCSI\_HBA} & A physical SCSI host bus adapter \\ {\tt user} & A user of the system \\ {\tt debug} & A basic class for testing \\ {\tt XSPolicy} & A class for handling Xen Security Policies \\ @@ -79,7 +81,11 @@ console.VM & VM.consoles & one-to-many\\ DPCI.VM & VM.DPCIs & one-to-many\\ PPCI.host & host.PPCIs & one-to-many\\ DSCSI.VM & VM.DSCSIs & one-to-many\\ +DSCSI.HBA & DSCSI\_HBA.DSCSIs & one-to-many\\ +DSCSI\_HBA.VM & VM.DSCSI\_HBAs & one-to-many\\ PSCSI.host & host.PSCSIs & one-to-many\\ +PSCSI.HBA & PSCSI\_HBA.PSCSIs & one-to-many\\ +PSCSI\_HBA.host & host.PSCSI\_HBAs & one-to-many\\ host.resident\_VMs & VM.resident\_on & many-to-one\\ host.host\_CPUs & host\_cpu.host & many-to-one\\ \hline @@ -1414,6 +1420,7 @@ $\mathit{RO}_\mathit{run}$ & {\tt crash\_dumps} & (crashdump ref) Set & crash d $\mathit{RO}_\mathit{run}$ & {\tt VTPMs} & (VTPM ref) Set & virtual TPMs \\ $\mathit{RO}_\mathit{run}$ & {\tt DPCIs} & (DPCI ref) Set & pass-through PCI devices \\ $\mathit{RO}_\mathit{run}$ & {\tt DSCSIs} & (DSCSI ref) Set & half-virtualized SCSI devices \\ +$\mathit{RO}_\mathit{run}$ & {\tt DSCSI\_HBAs} & (DSCSI\_HBA ref) Set & half-virtualized SCSI host bus adapters \\ $\mathit{RW}$ & {\tt PV/bootloader} & string & name of or path to bootloader \\ $\mathit{RW}$ & {\tt PV/kernel} & string & URI of kernel \\ $\mathit{RW}$ & {\tt PV/ramdisk} & string & URI of initrd \\ @@ -3566,6 +3573,38 @@ Get the DSCSIs field of the given VM. } +value of the field +\vspace{0.3cm} +\vspace{0.3cm} +\vspace{0.3cm} +\subsubsection{RPC name:~get\_DSCSI\_HBAs} + +{\bf Overview:} +Get the DSCSI\_HBAs field of the given VM. + + \noindent {\bf Signature:} +\begin{verbatim} ((DSCSI_HBA ref) Set) get_DSCSI_HBAs (session_id s, VM ref self)\end{verbatim} + + +\noindent{\bf Arguments:} + + +\vspace{0.3cm} +\begin{tabular}{|c|c|p{7cm}|} + \hline +{\bf type} & {\bf name} & {\bf description} \\ \hline +{\tt VM ref } & self & reference to the object \\ \hline + +\end{tabular} + +\vspace{0.3cm} + + \noindent {\bf Return Type:} +{\tt +(DSCSI\_HBA ref) Set +} + + value of the field \vspace{0.3cm} \vspace{0.3cm} @@ -5639,6 +5678,7 @@ $\mathit{RW}$ & {\tt crash\_dump\_sr} & SR ref & The SR in which VDIs for crash $\mathit{RO}_\mathit{run}$ & {\tt PBDs} & (PBD ref) Set & physical blockdevices \\ $\mathit{RO}_\mathit{run}$ & {\tt PPCIs} & (PPCI ref) Set & physical PCI devices \\ $\mathit{RO}_\mathit{run}$ & {\tt PSCSIs} & (PSCSI ref) Set & physical SCSI devices \\ +$\mathit{RO}_\mathit{run}$ & {\tt PSCSI\_HBAs} & (PSCSI\_HBA ref) Set & physical SCSI host bus adapters \\ $\mathit{RO}_\mathit{run}$ & {\tt host\_CPUs} & (host\_cpu ref) Set & The physical CPUs on this host \\ $\mathit{RO}_\mathit{run}$ & {\tt metrics} & host\_metrics ref & metrics associated with this host \\ \hline @@ -6993,6 +7033,38 @@ Get the PSCSIs field of the given host. } +value of the field +\vspace{0.3cm} +\vspace{0.3cm} +\vspace{0.3cm} +\subsubsection{RPC name:~get\_PSCSI\_HBAs} + +{\bf Overview:} +Get the PSCSI\_HBAs field of the given host. + + \noindent {\bf Signature:} +\begin{verbatim} ((PSCSI_HBA ref) Set) get_PSCSI_HBAs (session_id s, host ref self)\end{verbatim} + + +\noindent{\bf Arguments:} + + +\vspace{0.3cm} +\begin{tabular}{|c|c|p{7cm}|} + \hline +{\bf type} & {\bf name} & {\bf description} \\ \hline +{\tt host ref } & self & reference to the object \\ \hline + +\end{tabular} + +\vspace{0.3cm} + + \noindent {\bf Return Type:} +{\tt +(PSCSI\_HBA ref) Set +} + + value of the field \vspace{0.3cm} \vspace{0.3cm} @@ -15889,6 +15961,7 @@ Quals & Field & Type & Description \\ $\mathit{RO}_\mathit{run}$ & {\tt uuid} & string & unique identifier/object reference \\ $\mathit{RO}_\mathit{inst}$ & {\tt VM} & VM ref & the virtual machine \\ $\mathit{RO}_\mathit{inst}$ & {\tt PSCSI} & PSCSI ref & the physical SCSI device \\ +$\mathit{RO}_\mathit{run}$ & {\tt HBA} & DSCSI\_HBA ref & the half-virtualized SCSI host bus adapter \\ $\mathit{RO}_\mathit{run}$ & {\tt virtual\_host} & int & the virtual host number \\ $\mathit{RO}_\mathit{run}$ & {\tt virtual\_channel} & int & the virtual channel number \\ $\mathit{RO}_\mathit{run}$ & {\tt virtual\_target} & int & the virtual target number \\ @@ -16011,6 +16084,38 @@ PSCSI ref } +value of the field +\vspace{0.3cm} +\vspace{0.3cm} +\vspace{0.3cm} +\subsubsection{RPC name:~get\_HBA} + +{\bf Overview:} +Get the HBA field of the given DSCSI. + + \noindent {\bf Signature:} +\begin{verbatim} (DSCSI_HBA ref) get_HBA (session_id s, DSCSI ref self)\end{verbatim} + + +\noindent{\bf Arguments:} + + +\vspace{0.3cm} +\begin{tabular}{|c|c|p{7cm}|} + \hline +{\bf type} & {\bf name} & {\bf description} \\ \hline +{\tt DSCSI ref } & self & reference to the object \\ \hline + +\end{tabular} + +\vspace{0.3cm} + + \noindent {\bf Return Type:} +{\tt +DSCSI\_HBA ref +} + + value of the field \vspace{0.3cm} \vspace{0.3cm} @@ -16210,7 +16315,9 @@ value of the field \subsubsection{RPC name:~create} {\bf Overview:} -Create a new DSCSI instance, and return its handle. +Create a new DSCSI instance, and create a new DSCSI\_HBA instance as needed +that the new DSCSI instance connects to, and return the handle of the new +DSCSI instance. \noindent {\bf Signature:} \begin{verbatim} (DSCSI ref) create (session_id s, DSCSI record args)\end{verbatim} @@ -16242,7 +16349,8 @@ reference to the newly created object \subsubsection{RPC name:~destroy} {\bf Overview:} -Destroy the specified DSCSI instance. +Destroy the specified DSCSI instance, and destroy a DSCSI\_HBA instance as +needed that the specified DSCSI instance connects to. \noindent {\bf Signature:} \begin{verbatim} void destroy (session_id s, DSCSI ref self)\end{verbatim} @@ -16337,49 +16445,39 @@ all fields from the object \vspace{1cm} \newpage -\section{Class: PSCSI} -\subsection{Fields for class: PSCSI} +\section{Class: DSCSI\_HBA} +\subsection{Fields for class: DSCSI\_HBA} \begin{longtable}{|lllp{0.38\textwidth}|} \hline -\multicolumn{1}{|l}{Name} & \multicolumn{3}{l|}{\bf PSCSI} \\ +\multicolumn{1}{|l}{Name} & \multicolumn{3}{l|}{\bf DSCSI\_HBA} \\ \multicolumn{1}{|l}{Description} & \multicolumn{3}{l|}{\parbox{11cm}{\em A -physical SCSI device.}} \\ +half-virtualized SCSI host bus adapter.}} \\ \hline Quals & Field & Type & Description \\ \hline $\mathit{RO}_\mathit{run}$ & {\tt uuid} & string & unique identifier/object reference \\ -$\mathit{RO}_\mathit{run}$ & {\tt host} & host ref & the physical machine to which this PSCSI is connected \\ -$\mathit{RO}_\mathit{run}$ & {\tt physical\_host} & int & the physical host number \\ -$\mathit{RO}_\mathit{run}$ & {\tt physical\_channel} & int & the physical channel number \\ -$\mathit{RO}_\mathit{run}$ & {\tt physical\_target} & int & the physical target number \\ -$\mathit{RO}_\mathit{run}$ & {\tt physical\_lun} & int & the physical logical unit number \\ -$\mathit{RO}_\mathit{run}$ & {\tt physical\_HCTL} & string & the physical HCTL \\ -$\mathit{RO}_\mathit{run}$ & {\tt vendor\_name} & string & the vendor name \\ -$\mathit{RO}_\mathit{run}$ & {\tt model} & string & the model \\ -$\mathit{RO}_\mathit{run}$ & {\tt type\_id} & int & the SCSI type ID \\ -$\mathit{RO}_\mathit{run}$ & {\tt type} & string & the SCSI type \\ -$\mathit{RO}_\mathit{run}$ & {\tt dev\_name} & string & the SCSI device name (e.g. sda or st0) \\ -$\mathit{RO}_\mathit{run}$ & {\tt sg\_name} & string & the SCSI generic device name (e.g. sg0) \\ -$\mathit{RO}_\mathit{run}$ & {\tt revision} & string & the revision \\ -$\mathit{RO}_\mathit{run}$ & {\tt scsi\_id} & string & the SCSI ID \\ -$\mathit{RO}_\mathit{run}$ & {\tt scsi\_level} & int & the SCSI level \\ +$\mathit{RO}_\mathit{inst}$ & {\tt VM} & VM ref & the virtual machine \\ +$\mathit{RO}_\mathit{run}$ & {\tt PSCSI\_HBAs} & (PSCSI\_HBA ref) Set & the physical SCSI HBAs \\ +$\mathit{RO}_\mathit{run}$ & {\tt DSCSIs} & (DSCSI ref) Set & the half-virtualized SCSI devices which are connected to this DSCSI HBA \\ +$\mathit{RO}_\mathit{inst}$ & {\tt virtual\_host} & int & the virtual host number \\ +$\mathit{RO}_\mathit{inst}$ & {\tt assignment\_mode} & string & the assignment mode of the half-virtualized SCSI devices which are connected to this DSCSI HBA \\ \hline \end{longtable} -\subsection{RPCs associated with class: PSCSI} +\subsection{RPCs associated with class: DSCSI\_HBA} \subsubsection{RPC name:~get\_all} {\bf Overview:} -Return a list of all the PSCSIs known to the system. +Return a list of all the DSCSI HBAs known to the system. \noindent {\bf Signature:} -\begin{verbatim} ((PSCSI ref) Set) get_all (session_id s)\end{verbatim} +\begin{verbatim} ((DSCSI_HBA ref) Set) get_all (session_id s)\end{verbatim} \vspace{0.3cm} \noindent {\bf Return Type:} {\tt -(PSCSI ref) Set +(DSCSI\_HBA ref) Set } @@ -16390,10 +16488,10 @@ references to all objects \subsubsection{RPC name:~get\_uuid} {\bf Overview:} -Get the uuid field of the given PSCSI. +Get the uuid field of the given DSCSI HBA. \noindent {\bf Signature:} -\begin{verbatim} string get_uuid (session_id s, PSCSI ref self)\end{verbatim} +\begin{verbatim} string get_uuid (session_id s, DSCSI_HBA ref self)\end{verbatim} \noindent{\bf Arguments:} @@ -16403,14 +16501,14 @@ Get the uuid field of the given PSCSI. \begin{tabular}{|c|c|p{7cm}|} \hline {\bf type} & {\bf name} & {\bf description} \\ \hline -{\tt PSCSI ref } & self & reference to the object \\ \hline +{\tt DSCSI ref } & self & reference to the object \\ \hline \end{tabular} \vspace{0.3cm} \noindent {\bf Return Type:} -{\tt +{\tt string } @@ -16419,13 +16517,13 @@ value of the field \vspace{0.3cm} \vspace{0.3cm} \vspace{0.3cm} -\subsubsection{RPC name:~get\_host} +\subsubsection{RPC name:~get\_VM} {\bf Overview:} -Get the host field of the given PSCSI. +Get the VM field of the given DSCSI HBA. \noindent {\bf Signature:} -\begin{verbatim} (host ref) get_host (session_id s, PSCSI ref self)\end{verbatim} +\begin{verbatim} (VM ref) get_VM (session_id s, DSCSI_HBA ref self)\end{verbatim} \noindent{\bf Arguments:} @@ -16435,7 +16533,7 @@ Get the host field of the given PSCSI. \begin{tabular}{|c|c|p{7cm}|} \hline {\bf type} & {\bf name} & {\bf description} \\ \hline -{\tt PSCSI ref } & self & reference to the object \\ \hline +{\tt DSCSI\_HBA ref } & self & reference to the object \\ \hline \end{tabular} @@ -16443,7 +16541,7 @@ Get the host field of the given PSCSI. \noindent {\bf Return Type:} {\tt -host ref +VM ref } @@ -16451,13 +16549,13 @@ value of the field \vspace{0.3cm} \vspace{0.3cm} \vspace{0.3cm} -\subsubsection{RPC name:~get\_physical\_host} +\subsubsection{RPC name:~get\_PSCSI\_HBAs} {\bf Overview:} -Get the physical\_host field of the given PSCSI. +Get the PSCSI\_HBAs field of the given DSCSI HBA. \noindent {\bf Signature:} -\begin{verbatim} int get_physical_host (session_id s, PSCSI ref self)\end{verbatim} +\begin{verbatim} ((PSCSI_HBA ref) Set) get_PSCSI_HBAs (session_id s, DSCSI_HBA ref self)\end{verbatim} \noindent{\bf Arguments:} @@ -16467,7 +16565,7 @@ Get the physical\_host field of the given PSCSI. \begin{tabular}{|c|c|p{7cm}|} \hline {\bf type} & {\bf name} & {\bf description} \\ \hline -{\tt PSCSI ref } & self & reference to the object \\ \hline +{\tt DSCSI\_HBA ref } & self & reference to the object \\ \hline \end{tabular} @@ -16475,7 +16573,7 @@ Get the physical\_host field of the given PSCSI. \noindent {\bf Return Type:} {\tt -int +(PSCSI\_HBA ref) Set } @@ -16483,13 +16581,13 @@ value of the field \vspace{0.3cm} \vspace{0.3cm} \vspace{0.3cm} -\subsubsection{RPC name:~get\_physical\_channel} +\subsubsection{RPC name:~get\_DSCSIs} {\bf Overview:} -Get the physical\_channel field of the given PSCSI. +Get the DSCSIs field of the given DSCSI HBA. \noindent {\bf Signature:} -\begin{verbatim} int get_physical_channel (session_id s, PSCSI ref self)\end{verbatim} +\begin{verbatim} ((DSCSI ref) Set) get_DSCSIs (session_id s, DSCSI_HBA ref self)\end{verbatim} \noindent{\bf Arguments:} @@ -16499,7 +16597,7 @@ Get the physical\_channel field of the given PSCSI. \begin{tabular}{|c|c|p{7cm}|} \hline {\bf type} & {\bf name} & {\bf description} \\ \hline -{\tt PSCSI ref } & self & reference to the object \\ \hline +{\tt DSCSI\_HBA ref } & self & reference to the object \\ \hline \end{tabular} @@ -16507,7 +16605,7 @@ Get the physical\_channel field of the given PSCSI. \noindent {\bf Return Type:} {\tt -int +(DSCSI ref) Set } @@ -16515,13 +16613,13 @@ value of the field \vspace{0.3cm} \vspace{0.3cm} \vspace{0.3cm} -\subsubsection{RPC name:~get\_physical\_target} +\subsubsection{RPC name:~get\_virtual\_host} {\bf Overview:} -Get the physical\_target field of the given PSCSI. +Get the virtual\_host field of the given DSCSI HBA. \noindent {\bf Signature:} -\begin{verbatim} int get_physical_target (session_id s, PSCSI ref self)\end{verbatim} +\begin{verbatim} int get_virtual_host (session_id s, DSCSI_HBA ref self)\end{verbatim} \noindent{\bf Arguments:} @@ -16531,7 +16629,7 @@ Get the physical\_target field of the given PSCSI. \begin{tabular}{|c|c|p{7cm}|} \hline {\bf type} & {\bf name} & {\bf description} \\ \hline -{\tt PSCSI ref } & self & reference to the object \\ \hline +{\tt DSCSI\_HBA ref } & self & reference to the object \\ \hline \end{tabular} @@ -16547,13 +16645,13 @@ value of the field \vspace{0.3cm} \vspace{0.3cm} \vspace{0.3cm} -\subsubsection{RPC name:~get\_physical\_lun} +\subsubsection{RPC name:~get\_assignment\_mode} {\bf Overview:} -Get the physical\_lun field of the given PSCSI. +Get the assignment\_mode field of the given DSCSI HBA. \noindent {\bf Signature:} -\begin{verbatim} int get_physical_lun (session_id s, PSCSI ref self)\end{verbatim} +\begin{verbatim} string get_assignment_mode (session_id s, DSCSI_HBA ref self)\end{verbatim} \noindent{\bf Arguments:} @@ -16563,7 +16661,7 @@ Get the physical\_lun field of the given PSCSI. \begin{tabular}{|c|c|p{7cm}|} \hline {\bf type} & {\bf name} & {\bf description} \\ \hline -{\tt PSCSI ref } & self & reference to the object \\ \hline +{\tt DSCSI\_HBA ref } & self & reference to the object \\ \hline \end{tabular} @@ -16571,7 +16669,7 @@ Get the physical\_lun field of the given PSCSI. \noindent {\bf Return Type:} {\tt -int +string } @@ -16579,13 +16677,15 @@ value of the field \vspace{0.3cm} \vspace{0.3cm} \vspace{0.3cm} -\subsubsection{RPC name:~get\_physical\_HCTL} +\subsubsection{RPC name:~create} {\bf Overview:} -Get the physical\_HCTL field of the given PSCSI. +Create a new DSCSI\_HBA instance, and create new DSCSI instances of +half-virtualized SCSI devices which are connected to the half-virtualized +SCSI host bus adapter, and return the handle of the new DSCSI\_HBA instance. \noindent {\bf Signature:} -\begin{verbatim} string get_physical_HCTL (session_id s, PSCSI ref self)\end{verbatim} +\begin{verbatim} (DSCSI_HBA ref) create (session_id s, DSCSI_HBA record args)\end{verbatim} \noindent{\bf Arguments:} @@ -16595,7 +16695,7 @@ Get the physical\_HCTL field of the given PSCSI. \begin{tabular}{|c|c|p{7cm}|} \hline {\bf type} & {\bf name} & {\bf description} \\ \hline -{\tt PSCSI ref } & self & reference to the object \\ \hline +{\tt DSCSI\_HBA record } & args & All constructor arguments \\ \hline \end{tabular} @@ -16603,21 +16703,23 @@ Get the physical\_HCTL field of the given PSCSI. \noindent {\bf Return Type:} {\tt -string +DSCSI\_HBA ref } -value of the field +reference to the newly created object \vspace{0.3cm} \vspace{0.3cm} \vspace{0.3cm} -\subsubsection{RPC name:~get\_vendor\_name} +\subsubsection{RPC name:~destroy} {\bf Overview:} -Get the vendor\_name field of the given PSCSI. +Destroy the specified DSCSI\_HBA instance, and destroy DSCSI instances of +half-virtualized SCSI devices which are connected to the half-virtualized SCSI +host bus adapter. \noindent {\bf Signature:} -\begin{verbatim} string get_vendor_name (session_id s, PSCSI ref self)\end{verbatim} +\begin{verbatim} void destroy (session_id s, DSCSI_HBA ref self)\end{verbatim} \noindent{\bf Arguments:} @@ -16627,7 +16729,7 @@ Get the vendor\_name field of the given PSCSI. \begin{tabular}{|c|c|p{7cm}|} \hline {\bf type} & {\bf name} & {\bf description} \\ \hline -{\tt PSCSI ref } & self & reference to the object \\ \hline +{\tt DSCSI\_HBA ref } & self & reference to the object \\ \hline \end{tabular} @@ -16635,21 +16737,20 @@ Get the vendor\_name field of the given PSCSI. \noindent {\bf Return Type:} {\tt -string +void } -value of the field \vspace{0.3cm} \vspace{0.3cm} \vspace{0.3cm} -\subsubsection{RPC name:~get\_model} +\subsubsection{RPC name:~get\_by\_uuid} {\bf Overview:} -Get the model field of the given PSCSI. +Get a reference to the DSCSI\_HBA instance with the specified UUID. \noindent {\bf Signature:} -\begin{verbatim} string get_model (session_id s, PSCSI ref self)\end{verbatim} +\begin{verbatim} (DSCSI_HBA ref) get_by_uuid (session_id s, string uuid)\end{verbatim} \noindent{\bf Arguments:} @@ -16659,7 +16760,7 @@ Get the model field of the given PSCSI. \begin{tabular}{|c|c|p{7cm}|} \hline {\bf type} & {\bf name} & {\bf description} \\ \hline -{\tt PSCSI ref } & self & reference to the object \\ \hline +{\tt string } & uuid & UUID of object to return \\ \hline \end{tabular} @@ -16667,21 +16768,21 @@ Get the model field of the given PSCSI. \noindent {\bf Return Type:} {\tt -string +DSCSI\_HBA ref } -value of the field +reference to the object \vspace{0.3cm} \vspace{0.3cm} \vspace{0.3cm} -\subsubsection{RPC name:~get\_type\_id} +\subsubsection{RPC name:~get\_record} {\bf Overview:} -Get the type\_id field of the given PSCSI. +Get a record containing the current state of the given DSCSI HBA. \noindent {\bf Signature:} -\begin{verbatim} int get_type_id (session_id s, PSCSI ref self)\end{verbatim} +\begin{verbatim} (DSCSI_HBA record) get_record (session_id s, DSCSI_HBA ref self)\end{verbatim} \noindent{\bf Arguments:} @@ -16691,7 +16792,7 @@ Get the type\_id field of the given PSCSI. \begin{tabular}{|c|c|p{7cm}|} \hline {\bf type} & {\bf name} & {\bf description} \\ \hline -{\tt PSCSI ref } & self & reference to the object \\ \hline +{\tt DSCSI\_HBA ref } & self & reference to the object \\ \hline \end{tabular} @@ -16699,53 +16800,75 @@ Get the type\_id field of the given PSCSI. \noindent {\bf Return Type:} {\tt -int +DSCSI\_HBA record } -value of the field +all fields from the object \vspace{0.3cm} \vspace{0.3cm} \vspace{0.3cm} -\subsubsection{RPC name:~get\_type} + +\vspace{1cm} +\newpage +\section{Class: PSCSI} +\subsection{Fields for class: PSCSI} +\begin{longtable}{|lllp{0.38\textwidth}|} +\hline +\multicolumn{1}{|l}{Name} & \multicolumn{3}{l|}{\bf PSCSI} \\ +\multicolumn{1}{|l}{Description} & \multicolumn{3}{l|}{\parbox{11cm}{\em A +physical SCSI device.}} \\ +\hline +Quals & Field & Type & Description \\ +\hline +$\mathit{RO}_\mathit{run}$ & {\tt uuid} & string & unique identifier/object reference \\ +$\mathit{RO}_\mathit{run}$ & {\tt host} & host ref & the physical machine to which this PSCSI is connected \\ +$\mathit{RO}_\mathit{run}$ & {\tt HBA} & PSCSI\_HBA ref & the physical SCSI host bus adapter \\ +$\mathit{RO}_\mathit{run}$ & {\tt physical\_host} & int & the physical host number \\ +$\mathit{RO}_\mathit{run}$ & {\tt physical\_channel} & int & the physical channel number \\ +$\mathit{RO}_\mathit{run}$ & {\tt physical\_target} & int & the physical target number \\ +$\mathit{RO}_\mathit{run}$ & {\tt physical\_lun} & int & the physical logical unit number \\ +$\mathit{RO}_\mathit{run}$ & {\tt physical\_HCTL} & string & the physical HCTL \\ +$\mathit{RO}_\mathit{run}$ & {\tt vendor\_name} & string & the vendor name \\ +$\mathit{RO}_\mathit{run}$ & {\tt model} & string & the model \\ +$\mathit{RO}_\mathit{run}$ & {\tt type\_id} & int & the SCSI type ID \\ +$\mathit{RO}_\mathit{run}$ & {\tt type} & string & the SCSI type \\ +$\mathit{RO}_\mathit{run}$ & {\tt dev\_name} & string & the SCSI device name (e.g. sda or st0) \\ +$\mathit{RO}_\mathit{run}$ & {\tt sg\_name} & string & the SCSI generic device name (e.g. sg0) \\ +$\mathit{RO}_\mathit{run}$ & {\tt revision} & string & the revision \\ +$\mathit{RO}_\mathit{run}$ & {\tt scsi\_id} & string & the SCSI ID \\ +$\mathit{RO}_\mathit{run}$ & {\tt scsi\_level} & int & the SCSI level \\ +\hline +\end{longtable} +\subsection{RPCs associated with class: PSCSI} +\subsubsection{RPC name:~get\_all} {\bf Overview:} -Get the type field of the given PSCSI. +Return a list of all the PSCSIs known to the system. \noindent {\bf Signature:} -\begin{verbatim} string get_type (session_id s, PSCSI ref self)\end{verbatim} - - -\noindent{\bf Arguments:} - - -\vspace{0.3cm} -\begin{tabular}{|c|c|p{7cm}|} - \hline -{\bf type} & {\bf name} & {\bf description} \\ \hline -{\tt PSCSI ref } & self & reference to the object \\ \hline +\begin{verbatim} ((PSCSI ref) Set) get_all (session_id s)\end{verbatim} -\end{tabular} \vspace{0.3cm} \noindent {\bf Return Type:} {\tt -string +(PSCSI ref) Set } -value of the field +references to all objects \vspace{0.3cm} \vspace{0.3cm} \vspace{0.3cm} -\subsubsection{RPC name:~get\_dev\_name} +\subsubsection{RPC name:~get\_uuid} {\bf Overview:} -Get the dev\_name field of the given PSCSI. +Get the uuid field of the given PSCSI. \noindent {\bf Signature:} -\begin{verbatim} string get_dev_name (session_id s, PSCSI ref self)\end{verbatim} +\begin{verbatim} string get_uuid (session_id s, PSCSI ref self)\end{verbatim} \noindent{\bf Arguments:} @@ -16771,13 +16894,13 @@ value of the field \vspace{0.3cm} \vspace{0.3cm} \vspace{0.3cm} -\subsubsection{RPC name:~get\_sg\_name} +\subsubsection{RPC name:~get\_host} {\bf Overview:} -Get the sg\_name field of the given PSCSI. +Get the host field of the given PSCSI. \noindent {\bf Signature:} -\begin{verbatim} string get_sg_name (session_id s, PSCSI ref self)\end{verbatim} +\begin{verbatim} (host ref) get_host (session_id s, PSCSI ref self)\end{verbatim} \noindent{\bf Arguments:} @@ -16795,7 +16918,7 @@ Get the sg\_name field of the given PSCSI. \noindent {\bf Return Type:} {\tt -string +host ref } @@ -16803,13 +16926,13 @@ value of the field \vspace{0.3cm} \vspace{0.3cm} \vspace{0.3cm} -\subsubsection{RPC name:~get\_revision} +\subsubsection{RPC name:~get\_HBA} {\bf Overview:} -Get the revision field of the given PSCSI. +Get the HBA field of the given PSCSI. \noindent {\bf Signature:} -\begin{verbatim} string get_revision (session_id s, PSCSI ref self)\end{verbatim} +\begin{verbatim} (PSCSI_HBA ref) get_HBA (session_id s, PSCSI ref self)\end{verbatim} \noindent{\bf Arguments:} @@ -16827,7 +16950,7 @@ Get the revision field of the given PSCSI. \noindent {\bf Return Type:} {\tt -string +PSCSI\_HBA ref } @@ -16835,13 +16958,13 @@ value of the field \vspace{0.3cm} \vspace{0.3cm} \vspace{0.3cm} -\subsubsection{RPC name:~get\_scsi\_id} +\subsubsection{RPC name:~get\_physical\_host} {\bf Overview:} -Get the scsi\_id field of the given PSCSI. +Get the physical\_host field of the given PSCSI. \noindent {\bf Signature:} -\begin{verbatim} string get_scsi_id (session_id s, PSCSI ref self)\end{verbatim} +\begin{verbatim} int get_physical_host (session_id s, PSCSI ref self)\end{verbatim} \noindent{\bf Arguments:} @@ -16859,7 +16982,391 @@ Get the scsi\_id field of the given PSCSI. \noindent {\bf Return Type:} {\tt -string +int +} + + +value of the field +\vspace{0.3cm} +\vspace{0.3cm} +\vspace{0.3cm} +\subsubsection{RPC name:~get\_physical\_channel} + +{\bf Overview:} +Get the physical\_channel field of the given PSCSI. + + \noindent {\bf Signature:} +\begin{verbatim} int get_physical_channel (session_id s, PSCSI ref self)\end{verbatim} + + +\noindent{\bf Arguments:} + + +\vspace{0.3cm} +\begin{tabular}{|c|c|p{7cm}|} + \hline +{\bf type} & {\bf name} & {\bf description} \\ \hline +{\tt PSCSI ref } & self & reference to the object \\ \hline + +\end{tabular} + +\vspace{0.3cm} + + \noindent {\bf Return Type:} +{\tt +int +} + + +value of the field +\vspace{0.3cm} +\vspace{0.3cm} +\vspace{0.3cm} +\subsubsection{RPC name:~get\_physical\_target} + +{\bf Overview:} +Get the physical\_target field of the given PSCSI. + + \noindent {\bf Signature:} +\begin{verbatim} int get_physical_target (session_id s, PSCSI ref self)\end{verbatim} + + +\noindent{\bf Arguments:} + + +\vspace{0.3cm} +\begin{tabular}{|c|c|p{7cm}|} + \hline +{\bf type} & {\bf name} & {\bf description} \\ \hline +{\tt PSCSI ref } & self & reference to the object \\ \hline + +\end{tabular} + +\vspace{0.3cm} + + \noindent {\bf Return Type:} +{\tt +int +} + + +value of the field +\vspace{0.3cm} +\vspace{0.3cm} +\vspace{0.3cm} +\subsubsection{RPC name:~get\_physical\_lun} + +{\bf Overview:} +Get the physical\_lun field of the given PSCSI. + + \noindent {\bf Signature:} +\begin{verbatim} int get_physical_lun (session_id s, PSCSI ref self)\end{verbatim} + + +\noindent{\bf Arguments:} + + +\vspace{0.3cm} +\begin{tabular}{|c|c|p{7cm}|} + \hline +{\bf type} & {\bf name} & {\bf description} \\ \hline +{\tt PSCSI ref } & self & reference to the object \\ \hline + +\end{tabular} + +\vspace{0.3cm} + + \noindent {\bf Return Type:} +{\tt +int +} + + +value of the field +\vspace{0.3cm} +\vspace{0.3cm} +\vspace{0.3cm} +\subsubsection{RPC name:~get\_physical\_HCTL} + +{\bf Overview:} +Get the physical\_HCTL field of the given PSCSI. + + \noindent {\bf Signature:} +\begin{verbatim} string get_physical_HCTL (session_id s, PSCSI ref self)\end{verbatim} + + +\noindent{\bf Arguments:} + + +\vspace{0.3cm} +\begin{tabular}{|c|c|p{7cm}|} + \hline +{\bf type} & {\bf name} & {\bf description} \\ \hline +{\tt PSCSI ref } & self & reference to the object \\ \hline + +\end{tabular} + +\vspace{0.3cm} + + \noindent {\bf Return Type:} +{\tt +string +} + + +value of the field +\vspace{0.3cm} +\vspace{0.3cm} +\vspace{0.3cm} +\subsubsection{RPC name:~get\_vendor\_name} + +{\bf Overview:} +Get the vendor\_name field of the given PSCSI. + + \noindent {\bf Signature:} +\begin{verbatim} string get_vendor_name (session_id s, PSCSI ref self)\end{verbatim} + + +\noindent{\bf Arguments:} + + +\vspace{0.3cm} +\begin{tabular}{|c|c|p{7cm}|} + \hline +{\bf type} & {\bf name} & {\bf description} \\ \hline +{\tt PSCSI ref } & self & reference to the object \\ \hline + +\end{tabular} + +\vspace{0.3cm} + + \noindent {\bf Return Type:} +{\tt +string +} + + +value of the field +\vspace{0.3cm} +\vspace{0.3cm} +\vspace{0.3cm} +\subsubsection{RPC name:~get\_model} + +{\bf Overview:} +Get the model field of the given PSCSI. + + \noindent {\bf Signature:} +\begin{verbatim} string get_model (session_id s, PSCSI ref self)\end{verbatim} + + +\noindent{\bf Arguments:} + + +\vspace{0.3cm} +\begin{tabular}{|c|c|p{7cm}|} + \hline +{\bf type} & {\bf name} & {\bf description} \\ \hline +{\tt PSCSI ref } & self & reference to the object \\ \hline + +\end{tabular} + +\vspace{0.3cm} + + \noindent {\bf Return Type:} +{\tt +string +} + + +value of the field +\vspace{0.3cm} +\vspace{0.3cm} +\vspace{0.3cm} +\subsubsection{RPC name:~get\_type\_id} + +{\bf Overview:} +Get the type\_id field of the given PSCSI. + + \noindent {\bf Signature:} +\begin{verbatim} int get_type_id (session_id s, PSCSI ref self)\end{verbatim} + + +\noindent{\bf Arguments:} + + +\vspace{0.3cm} +\begin{tabular}{|c|c|p{7cm}|} + \hline +{\bf type} & {\bf name} & {\bf description} \\ \hline +{\tt PSCSI ref } & self & reference to the object \\ \hline + +\end{tabular} + +\vspace{0.3cm} + + \noindent {\bf Return Type:} +{\tt +int +} + + +value of the field +\vspace{0.3cm} +\vspace{0.3cm} +\vspace{0.3cm} +\subsubsection{RPC name:~get\_type} + +{\bf Overview:} +Get the type field of the given PSCSI. + + \noindent {\bf Signature:} +\begin{verbatim} string get_type (session_id s, PSCSI ref self)\end{verbatim} + + +\noindent{\bf Arguments:} + + +\vspace{0.3cm} +\begin{tabular}{|c|c|p{7cm}|} + \hline +{\bf type} & {\bf name} & {\bf description} \\ \hline +{\tt PSCSI ref } & self & reference to the object \\ \hline + +\end{tabular} + +\vspace{0.3cm} + + \noindent {\bf Return Type:} +{\tt +string +} + + +value of the field +\vspace{0.3cm} +\vspace{0.3cm} +\vspace{0.3cm} +\subsubsection{RPC name:~get\_dev\_name} + +{\bf Overview:} +Get the dev\_name field of the given PSCSI. + + \noindent {\bf Signature:} +\begin{verbatim} string get_dev_name (session_id s, PSCSI ref self)\end{verbatim} + + +\noindent{\bf Arguments:} + + +\vspace{0.3cm} +\begin{tabular}{|c|c|p{7cm}|} + \hline +{\bf type} & {\bf name} & {\bf description} \\ \hline +{\tt PSCSI ref } & self & reference to the object \\ \hline + +\end{tabular} + +\vspace{0.3cm} + + \noindent {\bf Return Type:} +{\tt +string +} + + +value of the field +\vspace{0.3cm} +\vspace{0.3cm} +\vspace{0.3cm} +\subsubsection{RPC name:~get\_sg\_name} + +{\bf Overview:} +Get the sg\_name field of the given PSCSI. + + \noindent {\bf Signature:} +\begin{verbatim} string get_sg_name (session_id s, PSCSI ref self)\end{verbatim} + + +\noindent{\bf Arguments:} + + +\vspace{0.3cm} +\begin{tabular}{|c|c|p{7cm}|} + \hline +{\bf type} & {\bf name} & {\bf description} \\ \hline +{\tt PSCSI ref } & self & reference to the object \\ \hline + +\end{tabular} + +\vspace{0.3cm} + + \noindent {\bf Return Type:} +{\tt +string +} + + +value of the field +\vspace{0.3cm} +\vspace{0.3cm} +\vspace{0.3cm} +\subsubsection{RPC name:~get\_revision} + +{\bf Overview:} +Get the revision field of the given PSCSI. + + \noindent {\bf Signature:} +\begin{verbatim} string get_revision (session_id s, PSCSI ref self)\end{verbatim} + + +\noindent{\bf Arguments:} + + +\vspace{0.3cm} +\begin{tabular}{|c|c|p{7cm}|} + \hline +{\bf type} & {\bf name} & {\bf description} \\ \hline +{\tt PSCSI ref } & self & reference to the object \\ \hline + +\end{tabular} + +\vspace{0.3cm} + + \noindent {\bf Return Type:} +{\tt +string +} + + +value of the field +\vspace{0.3cm} +\vspace{0.3cm} +\vspace{0.3cm} +\subsubsection{RPC name:~get\_scsi\_id} + +{\bf Overview:} +Get the scsi\_id field of the given PSCSI. + + \noindent {\bf Signature:} +\begin{verbatim} string get_scsi_id (session_id s, PSCSI ref self)\end{verbatim} + + +\noindent{\bf Arguments:} + + +\vspace{0.3cm} +\begin{tabular}{|c|c|p{7cm}|} + \hline +{\bf type} & {\bf name} & {\bf description} \\ \hline +{\tt PSCSI ref } & self & reference to the object \\ \hline + +\end{tabular} + +\vspace{0.3cm} + + \noindent {\bf Return Type:} +{\tt +string } @@ -16959,6 +17466,239 @@ PSCSI record } +all fields from the object +\vspace{0.3cm} +\vspace{0.3cm} +\vspace{0.3cm} + +\vspace{1cm} +\newpage +\section{Class: PSCSI\_HBA} +\subsection{Fields for class: PSCSI\_HBA} +\begin{longtable}{|lllp{0.38\textwidth}|} +\hline +\multicolumn{1}{|l}{Name} & \multicolumn{3}{l|}{\bf PSCSI\_HBA} \\ +\multicolumn{1}{|l}{Description} & \multicolumn{3}{l|}{\parbox{11cm}{\em A +physical SCSI host bus adapter.}} \\ +\hline +Quals & Field & Type & Description \\ +\hline +$\mathit{RO}_\mathit{run}$ & {\tt uuid} & string & unique identifier/object reference \\ +$\mathit{RO}_\mathit{run}$ & {\tt host} & host ref & the physical machine to which this PSCSI HBA is connected \\ +$\mathit{RO}_\mathit{run}$ & {\tt physical\_host} & int & the physical host number \\ +$\mathit{RO}_\mathit{run}$ & {\tt PSCSIs} & (PSCSI ref) Set & the physical SCSI devices which are connected to this PSCSI HBA \\ +\hline +\end{longtable} +\subsection{RPCs associated with class: PSCSI\_HBA} +\subsubsection{RPC name:~get\_all} + +{\bf Overview:} +Return a list of all the PSCSI HBAs known to the system. + + \noindent {\bf Signature:} +\begin{verbatim} ((PSCSI_HBA ref) Set) get_all (session_id s)\end{verbatim} + + +\vspace{0.3cm} + + \noindent {\bf Return Type:} +{\tt +(PSCSI\_HBA ref) Set +} + + +references to all objects +\vspace{0.3cm} +\vspace{0.3cm} +\vspace{0.3cm} +\subsubsection{RPC name:~get\_uuid} + +{\bf Overview:} +Get the uuid field of the given PSCSI HBA. + + \noindent {\bf Signature:} +\begin{verbatim} string get_uuid (session_id s, PSCSI_HBA ref self)\end{verbatim} + + +\noindent{\bf Arguments:} + + +\vspace{0.3cm} +\begin{tabular}{|c|c|p{7cm}|} + \hline +{\bf type} & {\bf name} & {\bf description} \\ \hline +{\tt PSCSI\_HBA ref } & self & reference to the object \\ \hline + +\end{tabular} + +\vspace{0.3cm} + + \noindent {\bf Return Type:} +{\tt +string +} + + +value of the field +\vspace{0.3cm} +\vspace{0.3cm} +\vspace{0.3cm} +\subsubsection{RPC name:~get\_host} + +{\bf Overview:} +Get the host field of the given PSCSI HBA. + + \noindent {\bf Signature:} +\begin{verbatim} (host ref) get_host (session_id s, PSCSI_HBA ref self)\end{verbatim} + + +\noindent{\bf Arguments:} + + +\vspace{0.3cm} +\begin{tabular}{|c|c|p{7cm}|} + \hline +{\bf type} & {\bf name} & {\bf description} \\ \hline +{\tt PSCSI\_HBA ref } & self & reference to the object \\ \hline + +\end{tabular} + +\vspace{0.3cm} + + \noindent {\bf Return Type:} +{\tt +host ref +} + + +value of the field +\vspace{0.3cm} +\vspace{0.3cm} +\vspace{0.3cm} +\subsubsection{RPC name:~get\_physical\_host} + +{\bf Overview:} +Get the physical\_host field of the given PSCSI HBA. + + \noindent {\bf Signature:} +\begin{verbatim} int get_physical_host (session_id s, PSCSI_HBA ref self)\end{verbatim} + + +\noindent{\bf Arguments:} + + +\vspace{0.3cm} +\begin{tabular}{|c|c|p{7cm}|} + \hline +{\bf type} & {\bf name} & {\bf description} \\ \hline +{\tt PSCSI\_HBA ref } & self & reference to the object \\ \hline + +\end{tabular} + +\vspace{0.3cm} + + \noindent {\bf Return Type:} +{\tt +int +} + + +value of the field +\vspace{0.3cm} +\vspace{0.3cm} +\vspace{0.3cm} +\subsubsection{RPC name:~get\_PSCSIs} + +{\bf Overview:} +Get the PSCSIs field of the given PSCSI HBA. + + \noindent {\bf Signature:} +\begin{verbatim} ((PSCSI ref) Set) get_PSCSIs (session_id s, PSCSI_HBA ref self)\end{verbatim} + + +\noindent{\bf Arguments:} + + +\vspace{0.3cm} +\begin{tabular}{|c|c|p{7cm}|} + \hline +{\bf type} & {\bf name} & {\bf description} \\ \hline +{\tt PSCSI\_HBA ref } & self & reference to the object \\ \hline + +\end{tabular} + +\vspace{0.3cm} + + \noindent {\bf Return Type:} +{\tt +(PSCSI ref) Set +} + + +value of the field +\vspace{0.3cm} +\vspace{0.3cm} +\vspace{0.3cm} +\subsubsection{RPC name:~get\_by\_uuid} + +{\bf Overview:} +Get a reference to the PSCSI HBA instance with the specified UUID. + + \noindent {\bf Signature:} +\begin{verbatim} (PSCSI_HBA ref) get_by_uuid (session_id s, string uuid)\end{verbatim} + + +\noindent{\bf Arguments:} + + +\vspace{0.3cm} +\begin{tabular}{|c|c|p{7cm}|} + \hline +{\bf type} & {\bf name} & {\bf description} \\ \hline +{\tt string } & uuid & UUID of object to return \\ \hline + +\end{tabular} + +\vspace{0.3cm} + + \noindent {\bf Return Type:} +{\tt +PSCSI\_HBA ref +} + + +reference to the object +\vspace{0.3cm} +\vspace{0.3cm} +\vspace{0.3cm} +\subsubsection{RPC name:~get\_record} + +{\bf Overview:} +Get a record containing the current state of the given PSCSI HBA. + + \noindent {\bf Signature:} +\begin{verbatim} (PSCSI_HBA record) get_record (session_id s, PSCSI_HBA ref self)\end{verbatim} + + +\noindent{\bf Arguments:} + + +\vspace{0.3cm} +\begin{tabular}{|c|c|p{7cm}|} + \hline +{\bf type} & {\bf name} & {\bf description} \\ \hline +{\tt PSCSI\_HBA ref } & self & reference to the object \\ \hline + +\end{tabular} + +\vspace{0.3cm} + + \noindent {\bf Return Type:} +{\tt +PSCSI\_HBA record +} + + all fields from the object \vspace{0.3cm} \vspace{0.3cm} -- 2.30.2